<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js严格模式</title>
</head>
<body>
<h1>使用“use strict”:</h1>
<h3>不允许使用未定义的变量。</h3>
<p>浏览器按下F12开启调试模式，查看报错信息。</p>
<script>
    "use strict";
    x = 3.14;  //报错（x未定义）
</script>
<!--严格模式的限制-->
<!--不允许使用未声明的变量：-->
<!--对象也是一个变量。-->
<!--不允许删除变量或对象。-->
<!--不允许删除函数。-->
<!--不允许变量重名:-->
<!--不允许使用八进制:-->
<!--不允许使用转义字符:-->
<!--不允许对只读属性赋值:-->
<!--不允许对一个使用getter方法读取的属性进行赋值-->
<!--不允许删除一个不允许删除的属性：-->
<!--变量名不能使用 "eval" 字符串:-->
<!--变量名不能使用 "arguments" 字符串:-->
<!--由于一些安全原因，在作用域 eval() 创建的变量不能被调用：-->
<!--禁止this关键字指向全局对象。因此，使用构造函数时，如果忘了加new，this不再指向全局对象，而是报错。-->
<!--"use strict" 指令只允许出现在脚本或函数的开头。-->
</body>
</html>